{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# White Christmas\n",
    "\n",
    "## HadCET\n",
    "The [HadCET](http://www.metoffice.gov.uk/hadobs/hadcet/) data is \"the longest available instrumental record of temperature in the world\", currently available from the UK Met Office. It provides the daily mean temperature for the centre of England since 1772.\n",
    "\n",
    "From that table you can see that the mean daily temperature for 1st January 2001 was recorded as 40 meaning 4.0°C, the temperature for 2nd January 2001 has 77 which translates to 7.7°C\n",
    "\n",
    "The February temperatures are in the m2 column, notice that -999 has been entered for invalid cells such as 31 Feb 2001.\n",
    "\n",
    "```\n",
    "+------+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+\n",
    "| yr   | dy |  m1 |  m2 |  m3 |  m4 |  m5 |  m6 |  m7 |  m8 |  m9 | m10 | m11 | m12 |\n",
    "+------+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+\n",
    "| 2001 |  1 |  40 |  11 |   9 | 112 |  87 | 131 | 185 | 180 | 150 | 151 |  91 |  98 |\n",
    "| 2001 |  2 |  77 |  32 |  -4 | 114 |  99 | 126 | 207 | 163 | 168 | 143 |  99 |  29 |\n",
    "| 2001 |  3 |  52 |  66 |  -3 |  84 | 105 | 100 | 209 | 166 | 153 | 142 |  87 |  55 |\n",
    "| 2001 |  4 |  50 |  57 |   5 |  69 |  72 | 130 | 219 | 151 | 134 | 139 |  90 |  73 |\n",
    "| 2001 |  5 |  47 |  68 |  12 |  71 |  82 | 136 | 217 | 161 | 139 | 159 |  75 |  82 |\n",
    "| 2001 |  6 |  43 |  83 |  57 |  90 |  76 | 135 | 201 | 173 | 141 | 142 |  95 |  46 |\n",
    "| 2001 |  7 |  49 |  85 |  86 |  69 |  90 | 110 | 185 | 161 | 153 | 128 | 112 |  62 |\n",
    "| 2001 |  8 |  51 |  34 |  87 |  71 |  93 | 102 | 163 | 155 | 147 | 127 |  50 |  40 |\n",
    "| 2001 |  9 |  22 |  21 |  90 | 101 | 102 | 101 | 157 | 141 | 121 | 132 |  33 |  16 |\n",
    "| 2001 | 10 |  23 |  51 | 102 |  96 | 147 | 110 | 160 | 152 | 119 | 125 |  44 |  19 |\n",
    "| 2001 | 11 |  29 |  81 | 101 |  72 | 172 | 106 | 141 | 152 | 142 | 150 |  78 |  20 |\n",
    "| 2001 | 12 |  40 |  79 |  60 |  74 | 168 | 138 | 144 | 171 | 142 | 153 | 101 |  46 |\n",
    "| 2001 | 13 |  31 |  40 |  57 |  57 | 165 | 148 | 143 | 195 | 124 | 160 |  53 |  47 |\n",
    "| 2001 | 14 |  24 |  35 |  64 |  75 | 118 | 144 | 132 | 205 | 124 | 155 |  40 |  15 |\n",
    "| 2001 | 15 |  18 |  44 |  53 |  91 | 120 | 153 | 127 | 210 | 129 | 154 |  43 |  13 |\n",
    "| 2001 | 16 | -12 |  46 |  54 |  73 | 128 | 138 | 133 | 176 | 125 | 117 |  55 |  23 |\n",
    "| 2001 | 17 |  -9 |  21 |  26 |  52 |  89 | 123 | 143 | 157 | 109 | 138 |  83 |  20 |\n",
    "| 2001 | 18 |  -5 |   3 |  28 |  44 | 101 | 128 | 149 | 167 | 124 | 147 |  73 |  38 |\n",
    "| 2001 | 19 |  -8 |  26 |  20 |  54 | 119 | 160 | 137 | 181 | 129 | 113 |  63 |  48 |\n",
    "| 2001 | 20 |  -5 |  36 |  22 |  54 | 130 | 156 | 146 | 169 | 138 | 135 |  67 |  26 |\n",
    "| 2001 | 21 |  13 |  62 |  26 |  52 | 129 | 140 | 153 | 159 | 116 | 104 |  96 |  41 |\n",
    "| 2001 | 22 |  45 |  73 |  60 |  64 | 131 | 139 | 169 | 179 | 119 | 118 |  91 |  12 |\n",
    "| 2001 | 23 |  69 |  49 |  77 |  84 | 150 | 160 | 170 | 179 | 103 | 137 |  48 |  18 |\n",
    "| 2001 | 24 |  69 |  27 |  68 |  68 | 157 | 173 | 155 | 191 | 127 | 130 |  68 |  34 |\n",
    "| 2001 | 25 |  48 |  14 |  49 |  85 | 137 | 191 | 181 | 193 | 123 | 124 | 115 |  45 |\n",
    "| 2001 | 26 |  47 |  27 |  38 |  90 | 157 | 219 | 184 | 171 | 112 | 124 |  51 |  27 |\n",
    "| 2001 | 27 |  40 |  27 |  50 |  84 | 160 | 187 | 194 | 152 | 145 | 122 |  48 |  40 |\n",
    "| 2001 | 28 |  11 |  23 |  70 |  99 | 176 | 170 | 206 | 143 | 166 | 116 |  76 |  43 |\n",
    "| 2001 | 29 |  20 |-999 |  66 |  76 | 160 | 177 | 230 | 149 | 168 | 106 |  96 |  18 |\n",
    "| 2001 | 30 |  25 |-999 |  83 |  80 | 149 | 170 | 201 | 154 | 141 | 140 | 124 |  15 |\n",
    "| 2001 | 31 |  40 |-999 | 100 |-999 | 130 |-999 | 192 | 146 |-999 | 101 |-999 |  -4 |\n",
    "| 2002 |  1 | -18 |  86 |  45 | 113 |  93 | 143 | 131 | 161 | 126 | 145 | 114 |  87 |\n",
    "| 2002 |  2 | -18 | 109 |  31 | 100 |  84 | 162 | 135 | 156 | 140 | 156 | 114 |  83 |\n",
    "+------+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Setting default log level to \"WARN\".\n",
      "To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).\n"
     ]
    }
   ],
   "source": [
    "import findspark\n",
    "import pandas as pd\n",
    "findspark.init()\n",
    "\n",
    "SVR = '192.168.31.31'\n",
    "from pyspark.sql import SparkSession\n",
    "from pyspark.sql.functions import *\n",
    "from pyspark.sql import Window\n",
    "\n",
    "sc = (SparkSession.builder.appName('app19') \n",
    "      .master(f'spark://{SVR}:7077') \n",
    "      .config('spark.sql.warehouse.dir', f'hdfs://{SVR}:9000/user/hive/warehouse') \n",
    "      .config('spark.cores.max', '4') \n",
    "      .config('spark.executor.instances', '1') \n",
    "      .config('spark.executor.cores', '2') \n",
    "      .config('spark.executor.memory', '10g') \n",
    "      .enableHiveSupport().getOrCreate())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "hadcet = sc.read.table('sqlzoo.hadcet')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. Days, Months and Years\n",
    "The units are 10th of a degree Celcius. The columns are yr and dy for year and day of month. The next twelve columns are for January through to December.\n",
    "\n",
    "**Show the average daily temperature for August 10th 1964**\n",
    "\n",
    "```sql\n",
    "show create table hadcet\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                                \r"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>m8</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>139</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    m8\n",
       "0  139"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(hadcet.filter((hadcet['yr']==1964) & (hadcet['dy']==10))\n",
    " .select('m8').toPandas())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. preteen Dickens\n",
    "\n",
    "Charles Dickens is said to be responsible for the tradition of expecting snow at Christmas [Daily Telegraph](http://www.telegraph.co.uk/topics/christmas/3933091/Dreaming-of-a-white-Christmas-Blame-the-nostalgia-of-Charles-Dickens-snowy-childhood.html). Show the temperature on Christmas day (25th December) for each year of his childhood. He was born in February 1812 - so he was 1 (more or less) in December 1812.\n",
    "\n",
    "**Show the twelve temperatures.**\n",
    "\n",
    "```sql\n",
    "SELECT yr-1811 as age FROM hadcet\n",
    "  WHERE yr BETWEEN 1812 and 1812+12 AND dy=25\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>age</th>\n",
       "      <th>m12</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>-8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>-4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8</td>\n",
       "      <td>-8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>9</td>\n",
       "      <td>-3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>10</td>\n",
       "      <td>35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>11</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>12</td>\n",
       "      <td>78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>13</td>\n",
       "      <td>104</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    age  m12\n",
       "0     1    0\n",
       "1     2   81\n",
       "2     3   11\n",
       "3     4   -8\n",
       "4     5   30\n",
       "5     6   -4\n",
       "6     7   10\n",
       "7     8   -8\n",
       "8     9   -3\n",
       "9    10   35\n",
       "10   11    5\n",
       "11   12   78\n",
       "12   13  104"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(hadcet.withColumn('age', hadcet['yr']-1811)\n",
    " .filter((hadcet['yr'].between(1812, 1812+12)) & (hadcet['dy']==25))\n",
    " .select('age', 'm12')\n",
    " .toPandas())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Minimum Temperature Before Christmas\n",
    "\n",
    "We declare a White Christmas if there was a day with an average temperature below zero between 21st and 25th of December.\n",
    "\n",
    "**For each age 1-12 show which years were a White Christmas. Show 'White Christmas' or 'No snow' for each age.**\n",
    "\n",
    "```sql\n",
    "SELECT yr-1811 as age FROM hadcet\n",
    "  WHERE yr BETWEEN 1812 and 1812+12 AND dy=25\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>age</th>\n",
       "      <th>lbl</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>No snow</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>No snow</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>White Christmas</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>White Christmas</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>White Christmas</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>White Christmas</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7</td>\n",
       "      <td>White Christmas</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8</td>\n",
       "      <td>White Christmas</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>9</td>\n",
       "      <td>White Christmas</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>10</td>\n",
       "      <td>No snow</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>11</td>\n",
       "      <td>White Christmas</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>12</td>\n",
       "      <td>No snow</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    age              lbl\n",
       "0     1          No snow\n",
       "1     2          No snow\n",
       "2     3  White Christmas\n",
       "3     4  White Christmas\n",
       "4     5  White Christmas\n",
       "5     6  White Christmas\n",
       "6     7  White Christmas\n",
       "7     8  White Christmas\n",
       "8     9  White Christmas\n",
       "9    10          No snow\n",
       "10   11  White Christmas\n",
       "11   12          No snow"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(hadcet\n",
    " .filter((hadcet['yr'].between(1812, 1812+11)) & \n",
    "         (hadcet['dy'].between(21, 25) & (hadcet['m12'] != -999)))\n",
    " .groupBy('yr')\n",
    " .agg(min('m12').alias('m12'))\n",
    " .withColumn('age', hadcet['yr']-1811)\n",
    " .withColumn('lbl', when(col('m12')<0, lit('White Christmas')).otherwise(lit('No snow')))\n",
    " .select('age', 'lbl')\n",
    " .orderBy('age')\n",
    " .toPandas())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. White Christmas Count\n",
    "\n",
    "A person's White Christmas Count (wcc) is the number of White Christmases they were exposed to as a child (between 3 and 12 inclusive assuming they were born at the beginning of the year and were about 1 year old on their first Christmas).\n",
    "\n",
    "Charles Dickens's wcc was 8.\n",
    "\n",
    "**List all the years and the wcc for children born in each year of the data set. Only show years where the wcc was at least 7.**\n",
    "\n",
    "```sql\n",
    "SELECT yr-1811 as age FROM hadcet\n",
    "  WHERE yr BETWEEN 1812 and 1812+12 AND dy=25\n",
    "```\n",
    "\n",
    "```\n",
    "+------+-----+\n",
    "| yob  | wcc |\n",
    "+------+-----+\n",
    "| 1805 |   7 |\n",
    "| 1806 |   7 |\n",
    "| 1807 |   7 |\n",
    "| 1808 |   8 |\n",
    "| 1809 |   9 |\n",
    "| 1810 |   8 |\n",
    "| 1811 |   8 |\n",
    "| 1812 |   8 |\n",
    "| 1813 |   7 |\n",
    "+------+-----+\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>yr</th>\n",
       "      <th>wcc</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1809</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1810</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1811</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1812</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1813</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     yr  wcc\n",
       "0  1809    7\n",
       "1  1810    7\n",
       "2  1811    8\n",
       "3  1812    8\n",
       "4  1813    7"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = (hadcet.select('yr').distinct())\n",
    "y = (hadcet.withColumn('wc', (hadcet['m12']<lit(0)).cast('integer'))\n",
    "     .filter((hadcet['dy'].between(21, 25)) & (hadcet['m12'] != -999))\n",
    "     .groupBy('yr')\n",
    "     .agg(sum('wc').alias('wc'))\n",
    "     .filter(col('wc') > 0)\n",
    "     .select('yr'))\n",
    "(x.alias('x')\n",
    " .join(y.alias('y'), how='left')\n",
    " .filter((col('y.yr') >= col('x.yr')+lit(2)) & \n",
    "         (col('y.yr') <= col('x.yr')+lit(11)))\n",
    " .groupBy('x.yr')\n",
    " .agg(count('y.yr').alias('wcc'))\n",
    " .filter(col('wcc') >= 7)\n",
    " .orderBy('yr')\n",
    " .toPandas())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5. Climate Change\n",
    "\n",
    "Here are the average temperatures for August by decade. You decide."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>decade</th>\n",
       "      <th>avg_temp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1770</td>\n",
       "      <td>163.161290</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1780</td>\n",
       "      <td>155.464516</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1790</td>\n",
       "      <td>157.570968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1800</td>\n",
       "      <td>163.880645</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1810</td>\n",
       "      <td>148.087097</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1820</td>\n",
       "      <td>154.135484</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1830</td>\n",
       "      <td>153.438710</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1840</td>\n",
       "      <td>150.958065</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1850</td>\n",
       "      <td>157.732258</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1860</td>\n",
       "      <td>152.229032</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1870</td>\n",
       "      <td>157.232258</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>1880</td>\n",
       "      <td>151.564516</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>1890</td>\n",
       "      <td>155.583871</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>1900</td>\n",
       "      <td>150.083871</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>1910</td>\n",
       "      <td>156.400000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>1920</td>\n",
       "      <td>149.916129</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>1930</td>\n",
       "      <td>162.532258</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>1940</td>\n",
       "      <td>161.067742</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>1950</td>\n",
       "      <td>156.977419</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>1960</td>\n",
       "      <td>151.838710</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>1970</td>\n",
       "      <td>159.845161</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>1980</td>\n",
       "      <td>158.503226</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>1990</td>\n",
       "      <td>167.700000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>2000</td>\n",
       "      <td>166.793548</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>2010</td>\n",
       "      <td>160.069124</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    decade    avg_temp\n",
       "0     1770  163.161290\n",
       "1     1780  155.464516\n",
       "2     1790  157.570968\n",
       "3     1800  163.880645\n",
       "4     1810  148.087097\n",
       "5     1820  154.135484\n",
       "6     1830  153.438710\n",
       "7     1840  150.958065\n",
       "8     1850  157.732258\n",
       "9     1860  152.229032\n",
       "10    1870  157.232258\n",
       "11    1880  151.564516\n",
       "12    1890  155.583871\n",
       "13    1900  150.083871\n",
       "14    1910  156.400000\n",
       "15    1920  149.916129\n",
       "16    1930  162.532258\n",
       "17    1940  161.067742\n",
       "18    1950  156.977419\n",
       "19    1960  151.838710\n",
       "20    1970  159.845161\n",
       "21    1980  158.503226\n",
       "22    1990  167.700000\n",
       "23    2000  166.793548\n",
       "24    2010  160.069124"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(hadcet.withColumn('decade', floor(hadcet['yr'] / 10) * 10)\n",
    " .filter(hadcet['m8'] != -999)\n",
    " .groupBy('decade')\n",
    " .agg(avg('m8').alias('avg_temp'))\n",
    " .orderBy('decade')\n",
    " .toPandas())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: xlabel='decade'>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjUAAAGwCAYAAABRgJRuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACIsUlEQVR4nO3deXhU5dk/8O+ZPfu+QhZIIGEJGBARREThhUQFBH61LhVRKnWvYNGXVmnVtiha9a2lotbS0opWq6JUCyqyKqAgIYgQkhAIWUkC2SbJZJbz+2PmOTOTTCYzyTkzZyb357pyXTBz5szJMGTuPM+9cDzP8yCEEEIICXAKf18AIYQQQogYKKghhBBCSFCgoIYQQgghQYGCGkIIIYQEBQpqCCGEEBIUKKghhBBCSFCgoIYQQgghQUHl7wvwFYvFgpqaGkRERIDjOH9fDiGEEEI8wPM82trakJqaCoXC/VrMkAlqampqkJaW5u/LIIQQQsgAnD9/HsOHD3d7zJAJaiIiIgBYX5TIyEg/Xw0hhBBCPNHa2oq0tDThc9ydIRPUsC2nyMhICmoIIYSQAONJ6gglChNCCCEkKFBQQwghhJCgQEENIYQQQoLCkMmp8ZTZbIbRaPT3ZRCRaDSafksACSGEBAcKamx4nkddXR2am5v9fSlERAqFAiNGjIBGo/H3pRBCCJEYBTU2LKBJTExEaGgoNegLAqzhYm1tLdLT0+nflBBCghwFNbBuObGAJi4uzt+XQ0SUkJCAmpoamEwmqNVqf18OIYQQCVGyASDk0ISGhvr5SojY2LaT2Wz285UQQgiRGgU1Dmh7IvjQvykhhAwdFNQQQgghJChQUEMIIYSQoEBBDSGEEEKCAgU1ZNA4jsPWrVv9fRmEEDIk8DyPzm4qfnCFghpCCCEkgPzivWJc9vRnePfweX9fiux4HdTs3bsX8+fPR2pqap+/oZ88eRILFixAVFQUwsLCMGXKFFRWVgIAzp49C47jXH699957fT7vsmXLeh1fUFDg7eV7jOd5dHSb/PLF87xX17p9+3bMmDED0dHRiIuLw4033ojy8nIAwPTp0/H44487Hd/Q0AC1Wo29e/cCAGpra3HDDTcgJCQEI0aMwJYtW5CZmYmXX3653+fOzMwEACxatAgcxwl/B4CPPvoIkyZNgk6nw8iRI/HUU0/BZDIJ93Mch9deew033ngjQkNDMWbMGBw4cABlZWWYNWsWwsLCMH36dOF7AYDf/OY3uOyyy/Daa68hLS0NoaGhuPnmm9HS0uLVa0YIIYFqf1kDDCYLHvt3MX77nx9gtnj3mRHMvG6+p9frMXHiRNx9991YvHhxr/vLy8sxY8YMLF++HE899RQiIyNx4sQJ6HQ6AEBaWhpqa2udHvP666/j+eefR2FhodvnLigowKZNm4S/a7Vaby/fY51GM8au3SHZ+d354el5CNV4/k+j1+uxatUqTJgwAe3t7Vi7di0WLVqEoqIi3H777Vi/fj2effZZobz5X//6F1JTU3H11VcDAJYuXYrGxkbs3r0barUaq1atwoULFzx67m+//RaJiYnYtGkTCgoKoFQqAQD79u3D0qVL8cc//hFXX301ysvLsWLFCgDAr3/9a+HxzzzzDF588UW8+OKLePzxx3Hbbbdh5MiRWLNmDdLT03H33XfjwQcfxH//+1/hMWVlZXj33Xexbds2tLa2Yvny5bj//vvx1ltvefyaEUJIIOo2WXChzSD8/S/7K1DW0I4/3pqPSB01GPU6qCksLHQbfPzqV7/C9ddfj/Xr1wu3ZWVlCX9WKpVITk52esyHH36Im2++GeHh4W6fW6vV9npsXwwGAwwG+z98a2urR48LREuWLHH6+1//+lckJCTghx9+wM0334xHHnkE+/fvF4KYLVu24NZbbwXHcTh16hS++OILfPvtt7j88ssBAH/5y18watQoj547ISEBABAdHe30b/PUU0/hf//3f3HnnXcCAEaOHIlnnnkGjz32mFNQc9ddd+Hmm28GADz++OOYNm0annzyScybNw8A8POf/xx33XWX03N2dXVh8+bNGDZsGADglVdewQ033IA//OEPHr8/CCEkENW1dIHnAa1KgT/cPBG/eO8Ydpc0YNGGr/CXO6dgRHyYvy/Rr0Qdk2CxWPDJJ5/gsccew7x583D06FGMGDECa9aswU033eTyMUeOHEFRURE2bNjQ7/l3796NxMRExMTE4LrrrsNvf/vbPscarFu3Dk899dSAv5cQtRI/PD1vwI8fjBC10qvjS0tLsXbtWhw6dAiNjY2wWCwAgMrKSowfPx5z587FW2+9hauvvhoVFRU4cOAAXnvtNQBASUkJVCoVJk2aJJwvOzsbMTExg/oejh07hq+++gq/+93vhNvMZjO6urrQ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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "(hadcet.withColumn('decade', floor(hadcet['yr'] / 10) * 10)\n",
    " .filter(hadcet['m8'] != -999)\n",
    " .groupBy('decade')\n",
    " .agg(avg('m8').alias('avg_temp'))\n",
    " .orderBy('decade')\n",
    " .toPandas()\n",
    " .plot(x='decade', y='avg_temp', kind='line'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "sc.stop()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
